/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.sadhar.sipp.perekamananggaranpendapatanbanpem;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.sadhar.sia.common.ClassConnection;

/**
 *
 * @author hendro
 */
public class AnggaranPendapatanBanPemDAOImpl implements AnggaranPendapatanBanPemDAO {

    public AnggaranPendapatanBanPemDAOImpl() {
        ClassConnection.getTransactionProxyFactoryBean().setTarget(this);
    }

    public void insert(AnggaranPendapatanBanPem obj) throws Exception {
        String sql = "INSERT INTO ppmk.anggaranPendapatanBanPem(idPosAnggaranPendapatanUnit,idKomponen,nominalPerBulan) " +
                "VALUES(?,?,?)";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    obj.getIdPosAnggaranPendapatanUnit(),
                    obj.getIdKomponen(),
                    obj.getNominalPerbulan()
                });
    }

    public void update(AnggaranPendapatanBanPem obj) throws Exception {
        delete(obj);
        insert(obj);
    }

    public void delete(AnggaranPendapatanBanPem obj) throws Exception {
        String sql = "DELETE FROM ppmk.anggaranPendapatanBanPem WHERE idPosAnggaranPendapatanUnit=? AND idKomponen=?";
        ClassConnection.getJdbc().update(sql, new Object[]{
                    obj.getIdPosAnggaranPendapatanUnit(),
                    obj.getIdKomponen()
                });
    }

    public List<Map> list(String tahunAnggaran) throws Exception {
        String sql = "SELECT anggaranPendapatanBanPem.idPosAnggaranPendapatanUnit, anggaranPendapatanBanPem.idKomponen, anggaranPendapatanBanPem.nominalPerBulan, posAnggaranPendapatanUnit.kodeUnitKerja" +
                ",komponenAnggaranPendapatanBanPem.isKomponenGaji, komponenAnggaranPendapatanBanPem.kodeKomponenGaji, komponenAnggaranPendapatanBanPem.komponenDiluarGaji " +
                "FROM ppmk.komponenAnggaranPendapatanBanPem INNER JOIN ppmk.anggaranPendapatanBanPem " +
                "ON (komponenAnggaranPendapatanBanPem.idKomponen = anggaranPendapatanBanPem.idKomponen) " +
                "INNER JOIN ppmk.posAnggaranPendapatanUnit " +
                "ON (posAnggaranPendapatanUnit.idPosAnggaranPendapatanUnit = anggaranPendapatanBanPem.idPosAnggaranPendapatanUnit) " +
                "WHERE (komponenAnggaranPendapatanBanPem.tahunAnggaran=?)";
        List<Map> map = ClassConnection.getJdbc().queryForList(sql, new Object[]{                    
                    tahunAnggaran
                });
        return map;
    }

    public List<Map> listKomponen(String tahunAnggaran) throws Exception {
        String sql = "SELECT idKomponen, tahunAnggaran, isKomponenGaji, kodeKomponenGaji, komponenDiluarGaji, alias, rumus FROM " +
                "ppmk.komponenAnggaranPendapatanBanPem WHERE (tahunAnggaran =?)";
        List<Map> map = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                    tahunAnggaran
                });
        return map;
    }

    public Map selectAnggaran(int idKomponen, int idPosAnggaranPendapatanUnit) throws Exception {
        String sql = "SELECT idPosAnggaranPendapatanUnit,idKomponen,nominalPerBulan FROM " +
                "ppmk.anggaranPendapatanBanPem WHERE idKomponen=? AND idPosAnggaranPendapatanUnit=?";
        try {
            Map map = ClassConnection.getJdbc().queryForMap(sql, new Object[]{
                        idKomponen,
                        idPosAnggaranPendapatanUnit
                    });
            return map;
        } catch (Exception ex) {
            return new HashMap();
        }
    }

    public Map selectKomponenGaji(String kdKomponen) throws Exception {
        String sql = "SELECT KdKomponen, NmKomponen FROM penggajian.komponengaji WHERE (KdKomponen =?)";
        try {
            Map map = ClassConnection.getJdbc().queryForMap(sql, new Object[]{
                        kdKomponen
                    });
            return map;
        } catch (Exception ex) {
            return new HashMap();
        }
    }

    public List<Map> select(int idPosAnggaranPendapatanUnit, int idKomponen) throws Exception {
        String sql = "SELECT * FROM ppmk.anggaranPendapatanBanPem WHERE idPosAnggaranPendapatanUnit=? AND idKomponen=?";
        try {
            List<Map> mp = ClassConnection.getJdbc().queryForList(sql, new Object[]{
                        idPosAnggaranPendapatanUnit,
                        idKomponen
                    });
            return mp;
        } catch (Exception ex) {
            return new ArrayList<Map>();
        }
    }

   
}
